#include <stdio.h>
#include <stdlib.h> 

#define N 0x3f3f3f3f

int main()
{
    int i,j;
    int sum,Num;

    scanf("%d %d",&sum,&Num);
    //邮票面额
    int *a=(int *)calloc(Num,sizeof(int));
    for(i=0;i<Num;i++)
    {
        scanf("%d",&a[i]);
    }

    int **b=(int **)calloc(Num+1,sizeof(int *));//申请行数量的指针
    // 为每个指针指向的整型数组分配内存空间，并初始化为零
    for (int i = 0; i <= Num; ++i) 
    {
        b[i] = (int *)calloc(sum + 1, sizeof(int));
    }

    for(i=1;i<=sum;i++)
    {
        b[0][i]=N;//第零行除了第0列全部赋值一个较大的数     
    }
    for(i=1;i<=Num;i++)
    {
        for(j=1;j<=sum;j++)
        {
            b[i][j]=b[i-1][j];
            if(j>=a[i-1])
            {
                if(b[i-1][j-a[i-1]]+1<b[i-1][j])
                {
                    b[i][j]=b[i-1][j-a[i-1]]+1;
                }
            }
        }
    }
    if(b[Num][sum]==N)
    {
        printf("0\n");
    }else{
        printf("%d\n",b[Num][sum]);
    }    
}